#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
import win32gui

class FollowWeChatWindow(tk.Tk):
    def __init__(self):
        super().__init__()

        # 隐藏窗口边框和标题栏
        self.overrideredirect(True)

        # 窗口置顶
        self.attributes('-topmost', True)

        # 创建一个 Text 小部件，用于显示和编辑文本
        self.text = tk.Text(self, wrap='word',name='text')
        self.text.pack(expand=1, fill='both')  # 让 Text 小部件填充整个窗口
        self.text.setvar('title','text')

        # 启动定时器
        self.after(50, self.update_window)

    def update_window(self):
        # 获取微信窗口句柄和位置
        # 获取当前鼠标点击的窗口的句柄的标题
        wid = win32gui.GetForegroundWindow()
        title = win32gui.GetWindowText(wid)
        if title =="微信":
            wechat_hwnd = win32gui.FindWindow('WeChatMainWndForPC', None)
            self.text.setvar('title','微信title')

            wechat_rect = win32gui.GetWindowRect(wechat_hwnd)
            # 判断微信窗口是否为前台窗口
            if win32gui.GetForegroundWindow() == wechat_hwnd:
                # 微信窗口在前台时，显示本窗口（通过设置透明度）
                self.attributes('-alpha', 1.0)
            else:
                # 微信窗口不在前台时，隐藏本窗口（通过设置透明度）
                self.attributes('-alpha', 0.8)  # 使用一个较低的透明度值来隐藏窗口
            weChat_Height = wechat_rect[3] - wechat_rect[1]
            self.geometry('400x%d+%d+%d' % (weChat_Height, wechat_rect[2], wechat_rect[1]))
        elif title == "钉钉":
            ding_talk_hwnd = win32gui.FindWindow('StandardFrame_DingTalk', None)
            self.text.setvar('title', '钉钉title')
            dingtalk_rect = win32gui.GetWindowRect(ding_talk_hwnd)
            # 判断微信窗口是否为前台窗口
            if win32gui.GetForegroundWindow() == ding_talk_hwnd:
                # 微信窗口在前台时，显示本窗口（通过设置透明度）
                self.attributes('-alpha', 1.0)
            else:
                # 微信窗口不在前台时，隐藏本窗口（通过设置透明度）
                self.attributes('-alpha', 0.8)  # 使用一个较低的透明度值来隐藏窗口
            dingtalk_Height = dingtalk_rect[3] - dingtalk_rect[1]
            self.geometry('400x%d+%d+%d' % (dingtalk_Height, dingtalk_rect[2], dingtalk_rect[1]))
        elif self.text.getvar('title') == "微信title":
            wechat_hwnd = win32gui.FindWindow('WeChatMainWndForPC', None)
            wechat_rect = win32gui.GetWindowRect(wechat_hwnd)
            # 判断微信窗口是否为前台窗口
            if win32gui.GetForegroundWindow() == wechat_hwnd:
                # 微信窗口在前台时，显示本窗口（通过设置透明度）
                self.attributes('-alpha', 1.0)
            else:
                # 微信窗口不在前台时，隐藏本窗口（通过设置透明度）
                self.attributes('-alpha', 0.8)  # 使用一个较低的透明度值来隐藏窗口
            weChat_Height = wechat_rect[3] - wechat_rect[1]
            self.geometry('400x%d+%d+%d' % (weChat_Height, wechat_rect[2], wechat_rect[1]))
        elif self.text.getvar('title') == "钉钉title":
            ding_talk_hwnd = win32gui.FindWindow('StandardFrame_DingTalk', None)
            dingtalk_rect = win32gui.GetWindowRect(ding_talk_hwnd)
            # 判断微信窗口是否为前台窗口
            if win32gui.GetForegroundWindow() == ding_talk_hwnd:
                # 微信窗口在前台时，显示本窗口（通过设置透明度）
                self.attributes('-alpha', 1.0)
            else:
                # 微信窗口不在前台时，隐藏本窗口（通过设置透明度）
                self.attributes('-alpha', 0.8)  # 使用一个较低的透明度值来隐藏窗口
            dingtalk_Height = dingtalk_rect[3] - dingtalk_rect[1]
            self.geometry('400x%d+%d+%d' % (dingtalk_Height, dingtalk_rect[2], dingtalk_rect[1]))

        else:
            # 微信窗口未找到，隐藏本窗口
            self.attributes('-alpha', 0.0)
            self.text.setvar('title', 'title')

        # 继续定时器
        self.after(50, self.update_window)

if __name__ == "__main__":
    # check_wechat_messages()
    app = FollowWeChatWindow()
    app.mainloop()